home *** CD-ROM | disk | FTP | other *** search
/ The Fatted Calf / The Fatted Calf.iso / Applications / Workspace / Briefcase / Source / DView.m < prev    next >
Text File  |  1992-08-10  |  2KB  |  81 lines

  1. #import "DView.h"
  2. #import <appkit/NXImage.h>
  3. #import <appkit/TextField.h>
  4. #import <libc.h>
  5.  
  6. @implementation DView
  7.  
  8. static NXPoint            origin        = {0.0, 0.0};
  9. static BOOL                flag        = YES;
  10.  
  11. #define STEPS        120
  12. #define IMAGE_FILE    "BigCase"
  13.  
  14. - initFrame:(const NXRect *)frameRect;
  15. {
  16.     const NXSize     aSize        = {64.0,64.0};
  17.     
  18.     [super initFrame:frameRect];
  19.     theImage = [NXImage findImageNamed:IMAGE_FILE];
  20.     buffer = [[NXImage allocFromZone:[self zone]] initSize:&aSize];
  21.     return self;
  22. }
  23.  
  24. - free
  25. {
  26.     if (theImage) [theImage free];
  27.     if (buffer) [buffer free];
  28.     return [super free];
  29. }
  30.  
  31. - _doDissolve:i1 :i2
  32. {
  33.     float delta = 0.0;
  34.     int i = 0;
  35.     for (i = 0; i <= STEPS; i++) {
  36.         delta = (float)i/(float)STEPS;
  37.         [i1 composite:NX_SOVER toPoint:&origin];
  38.         [i2 dissolve:delta toPoint:&origin];
  39.         [self display];
  40.     }
  41.     [i2 dissolve:1.0 toPoint:&origin];
  42.     return self;
  43. }
  44.  
  45. - drawSelf:(NXRect *)rects :(int)rectCount;
  46. {
  47.     if (flag) [theImage composite:NX_SOVER toPoint:&origin];
  48.     else [buffer composite:NX_SOVER toPoint:&origin];
  49.     return self;
  50. }
  51.     
  52. - mouseDown:(NXEvent *)event
  53. {
  54.     NXImage *oldImage = NULL, *newImage = NULL;
  55.     
  56.     if ((event->type == NX_LMOUSEDOWN) &&
  57.         (event->flags & NX_COMMANDMASK) &&
  58.         (event->flags & NX_ALTERNATEMASK)) {
  59.         flag = NO;
  60.         [buffer lockFocus];
  61.         oldImage = [NXImage findImageNamed:IMAGE_FILE];
  62.         newImage = [NXImage findImageNamed:"me"];
  63.         [nameField setStringValue:"Subrata Sircar"];
  64.         [self _doDissolve:oldImage :newImage];
  65.         NXPing();
  66.         sleep(3);
  67.         [oldImage free];
  68.         oldImage = newImage;
  69.         newImage = [NXImage findImageNamed:IMAGE_FILE];
  70.         [nameField setStringValue:""];
  71.         [self _doDissolve:oldImage :newImage];
  72.         [buffer unlockFocus];
  73.         flag = YES;
  74.         [oldImage free];
  75.         [newImage free];
  76.     }
  77.     return self;
  78. }
  79.  
  80. @end
  81.